package goutils

import (
	"fmt"
	"os"
	"strings"

	mapset "github.com/deckarep/golang-set"
)

// mapset "github.com/deckarep/golang-set"

type Set mapset.Set

func PathIsExist(path string) (bool, error) {
	_, err := os.Stat(path)
	if err == nil {
		return true, nil
	}
	//isnotexist来判断，是不是不存在的错误
	if os.IsNotExist(err) {
		//如果返回的错误类型使用os.isNotExist()判断为true，说明文件或者文件夹不存在
		return false, nil
	}
	//如果有错误了，但是不是不存在的错误，所以把这个错误原封不动的返回
	return false, err
}

// mapset.Set元素拼接，返回拼接字符串
func MapsetJoin(set Set, sep string) string {
	b := ""
	for v := range set.Iter() {
		b = fmt.Sprintf("%s%s%v", b, sep, v)
	}
	return strings.Trim(b, sep)
}

// 字符串截取，支持中文
func Substr(str string, begin, length int) string {
	// 转换rune类型，用于支持中文
	rs := []rune(str)
	lth := len(rs)
	if begin < 0 {
		begin = 0
	}
	if begin >= lth {
		begin = lth
	}
	end := begin + length

	if end > lth {
		end = lth
	}
	return string(rs[begin:end])
}
